build,travis: test commits format
authorEtienne Champetier <[email protected]>
Sun, 23 Jul 2017 19:51:59 +0000 (12:51 -0700)
committerEtienne Champetier <[email protected]>
Mon, 24 Jul 2017 18:04:30 +0000 (11:04 -0700)
Signed-off-by: Etienne Champetier <[email protected]>
.travis.yml
.travis_do.sh

index e8e37aa7d548d13a5f39fc1584e8ab57562c75cf..ee321b375e884f5e227a5b4a0da7fbec2f9337e9 100644 (file)
@@ -11,4 +11,5 @@ before_script:
   - ./.travis_do.sh download_sdk
 
 script:
+  - ./.travis_do.sh test_commits
   - ./.travis_do.sh test_packages
index d27ebbfd3825607ac542831cb494286ef0d12937..673dced26db1b13887e2940f84eabd6e9a07b6f3 100755 (executable)
@@ -104,6 +104,44 @@ EOF
        exit $RET
 }
 
+test_commits() {
+       RET=0
+       for commit in $(git rev-list ${TRAVIS_COMMIT_RANGE/.../..}); do
+               echo_blue "=== Checking commit '$commit'"
+               if git show --format='%P' -s $commit | grep -qF ' '; then
+                       echo_red "Pull request should not include merge commits"
+                       RET=1
+               fi
+
+               author="$(git show -s --format=%aN $commit)"
+               if echo $author | grep -q '\S\+\s\+\S\+'; then
+                       echo_green "Author name ($author) seems ok"
+               else
+                       echo_red "Author name ($author) need to be your real name 'firstname lastname'"
+                       RET=1
+               fi
+
+               subject="$(git show -s --format=%s $commit)"
+               if echo "$subject" | grep -q '^[0-9A-Za-z,]\+: '; then
+                       echo_green "Commit subject line seems ok ($subject)"
+               else
+                       echo_red "Commit subject line MUST start with '<package name>: ' ($subject)"
+                       RET=1
+               fi
+
+               body="$(git show -s --format=%b $commit)"
+               sob="$(git show -s --format='Signed-off-by: %aN <%aE>' $commit)"
+               if echo "$body" | grep -qF "$sob"; then
+                       echo_green "Signed-off-by match author"
+               else
+                       echo_red "Signed-off-by is missing or doesn't match author (should be '$sob')"
+                       RET=1
+               fi
+       done
+
+       exit $RET
+}
+
 echo_blue "=== Travis ENV"
 env
 echo_blue "=== Travis ENV"